#ifndef GAME_ERRORS_H
#define GAME_ERRORS_H
	/**
	 * Младшие три бита под флаги результата работы чекера.
	 * Старшие 29 под количество очков, начисленных игроку за ход.
	 */ 

	typedef unsigned int u_int;
	
	//Ход корректен, играем дальше
	const u_int PIPE_NO_FOUND = 0;
	
	//Ход корректен, победил первый игрок
	const u_int FIRST_WINS = 1;
	
	//Ход корректен, победил второй игрок
	const u_int SECOND_WINS = 2;
	
	//Ход корректен, ничья. o0. Надо подумать когда такое может случиться,
	//ведь количество ходов подсчитвает менеджер
	const u_int DRAW = 3;
	
	//Ошибка в данных, считанных с консоли
	const u_int FORMAT_ERROR = 4;
	
	//Превышен предел времени работы бота.
	const u_int TIME_LIMIT = 5;
	
	//Некорректный формат файла, хранящего карту.
	const u_int MAP_FORMAT_ERROR = 6;
	
	//Ошибка при загрузке или сохранении карты
	const u_int MAP_LOAD_SAVE_ERROR = 7;
	
	//Возвращает количество очков, записанное в коде, возвращённом чекером.
	//(старшие 29 бит преборазуются в unsigned int)
	u_int getNumberScore(const u_int& code_error);
	
	//Записывает в code_error (старшие 29 битов должны быть нулями)
	//количество очков number_score.
	void setNumberScore(u_int& code_error, const u_int& number_score);
	
	//Возвращает флаг, записанный в коде.
	u_int getFlag(const u_int& flag);
#endif
